export const showToast = (title, icon = 'none') => {
	uni.showToast({
		icon,
		title
	})
}


/**
 * 时间戳转换工具函数
 * @param {number|string} timestamp - 时间戳（支持秒级或毫秒级）
 * @param {string} [format='YYYY-MM-DD HH:mm:ss'] - 输出格式
 * @param {number|string} [timezone=0] - 时区偏移（小时）或时区名称（如'Asia/Shanghai'）
 * @returns {string} 格式化后的时间字符串
 */
// 8是东八区
export const formatTimestamp = (timestamp, format = 'YYYY-MM-DD HH:mm:ss', timezone = 8) => {
	// 处理输入的时间戳（支持秒级和毫秒级）
	if (typeof timestamp === 'string') {
		timestamp = Number(timestamp);
	}

	// 秒级时间戳转换为毫秒
	if (timestamp.toString().length === 10) {
		timestamp = timestamp * 1000;
	}

	let date;

	// 处理时区
	if (typeof timezone === 'number') {
		// 使用时区偏移量
		const localTime = new Date(timestamp);
		const utcTime = localTime.getTime() + (localTime.getTimezoneOffset() * 60000);
		date = new Date(utcTime + (timezone * 3600000));
	} else {
		// 使用时区名称（需要浏览器支持Intl API）
		try {
			const options = { timeZone: timezone };
			const formatter = new Intl.DateTimeFormat('en-US', {
				year: 'numeric',
				month: '2-digit',
				day: '2-digit',
				hour: '2-digit',
				minute: '2-digit',
				second: '2-digit',
				hour12: false,
				...options
			});

			// 提取格式化后的各个部分
			const parts = formatter.formatToParts(new Date(timestamp));
			const dateObj = {};
			for (const part of parts) {
				dateObj[part.type] = part.value;
			}

			// 构建日期对象
			date = new Date(
				dateObj.year,
				parseInt(dateObj.month) - 1,
				dateObj.day,
				dateObj.hour,
				dateObj.minute,
				dateObj.second
			);
		} catch (error) {
			console.warn('时区不支持将切回本地时间', error);
			date = new Date(timestamp);
		}
	}


	// 格式化函数映射
	const formatters = {
		YYYY: date.getFullYear(),
		MM: String(date.getMonth() + 1).padStart(2, '0'),
		M: date.getMonth() + 1,
		DD: String(date.getDate()).padStart(2, '0'),
		D: date.getDate(),
		HH: String(date.getHours()).padStart(2, '0'),
		H: date.getHours(),
		hh: String(date.getHours() % 12 || 12).padStart(2, '0'),
		h: date.getHours() % 12 || 12,
		mm: String(date.getMinutes()).padStart(2, '0'),
		m: date.getMinutes(),
		ss: String(date.getSeconds()).padStart(2, '0'),
		s: date.getSeconds(),
		SS: String(Math.floor(date.getMilliseconds() / 10)).padStart(2, '0'),
		SSS: String(date.getMilliseconds()).padStart(3, '0'),
		A: date.getHours() >= 12 ? 'PM' : 'AM',
		a: date.getHours() >= 12 ? 'pm' : 'am',
		d: date.getDay(), // 0-6 (星期日到星期六)
		W: ['日', '一', '二', '三', '四', '五', '六'][date.getDay()] // 星期几
	};

	// 替换格式字符串中的占位符
	return format.replace(/YYYY|MM|DD|HH|hh|mm|ss|SSS|SS|A|a|D|H|h|m|s|W|d/g, (match) => {
		return formatters[match] !== undefined ? formatters[match] : match;
	});
}

// 示例用法
//console.log(formatTimestamp(1623456789)); // 输出: 2021-06-12 15:46:29
//console.log(formatTimestamp(1623456789, 'YYYY/MM/DD')); // 输出: 2021/06/12
//console.log(formatTimestamp(1623456789, 'HH:mm:ss')); // 输出: 15:46:29
//console.log(formatTimestamp(1623456789, 'YYYY-MM-DD HH:mm:ss', 8)); // 输出: 2021-06-12 23:46:29 (UTC+8)
//console.log(formatTimestamp(1623456789, 'YYYY-MM-DD HH:mm:ss', 'Asia/Shanghai')); // 使用时区名称